/**
 * 为了让类型更灵活，代码更容易复用，TS支持了泛型。
 *
 * 能够让我们在编写类型时可以先通过类型变量来占位，等使用时再传递一个具体的类型。
 *
 * 就能为了让函数更灵活一样，这个函数需要设置形参。调用时传递实参
 *
 *
 * 几个基本泛型的案例
 *    1. 数组类型的定义
 *      Array<string>
 *    2. 泛型工具
 *      Readonly<Person>
 *
 *
 * 1. 定义
 *
 * 2. 使用
 */

function identity<T>(value: T): T {
  return value;
}

const a = identity<number>(10); // number
const b = identity<string>("hello"); // string
const c = identity<boolean>(true);

document.querySelector("#boo");

function identity1<T, U>(value: T, message: U): T {
  return value;
}

identity1<number, string>(18, "张三"); // number

const bbb = identity1(18, "张三");

const el = document.querySelector<HTMLInputElement>("#box");

export {};
